package com.redpack.redpost.util.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.redpack.redpost.connection.RedpostConexion;
import com.redpack.redpost.util.to.*;

public class ReporteUsuariosDao {

	
	public static List getReporteArribo(String fecha_inicio,String fecha_final,String nip,int reg_completo,int serv_corresp) throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;
		List _ReporteArribo = new ArrayList(); 
		String sql = "" ;
		
		String cond = "" ;
		
		try{			
			
			sql += "SELECT UR.cve_usuarioredpost, UR.nip, UR.nombre, UR.apellidos , UR.email,   ";
			sql += "UR.consignado_a, UR.calle  ,   ";
			sql += "UR.colonia, UR.cp, UR.estado, UR.ciudad, UR.tel_casa, UR.tel_oficina, UR.tel_movil,  "; 
			sql += " TS.cve_servicio,TS.descripcion,   "; 
		
		
			sql += " (CASE WHEN ur.referencias IS NULL or ur.referencias  = '' THEN '' ELSE ur.referencias END),  ";
			sql += " (CASE WHEN ur.num_interior IS NULL or ur.num_interior  = '' THEN '' ELSE ur.num_interior END),  ";
			sql += " (CASE WHEN ur.razonsocial IS NULL or ur.razonsocial  = '' THEN '' ELSE ur.razonsocial END),  ";
			sql += " (CASE WHEN ur.num_exterior IS NULL or ur.num_exterior  = '' THEN '' ELSE ur.num_exterior END),  ";
			sql += " CASE WHEN UR.frecuencia = '' or ur.frecuencia  = '' THEN 'Desactivado' ELSE  UR.frecuencia END,  ";
			sql += " CASE WHEN UR.seguro = 1 THEN 'Activo' ELSE 'Desactivado' END AS seguro, ";
			sql += " CASE WHEN UR.correspondencia = 1 THEN 'Activa' ELSE 'Desactivada' END AS Correspondencia, ";
			sql += " (CASE WHEN ur.fp IS NULL or ur.fp  = '' THEN 'Incompleto' ELSE ur.fp END), ";
			
			sql += "CASE WHEN UR.status = 1 THEN 'Activo' ELSE 'Desactivado' END as status, ";
			sql += "CASE WHEN UR.status = 1 THEN 'Desactivar' ELSE 'Activar' END as accion_status_texto, ";
			//accion = 1 Desactiva , accion = 2 Activar
			sql += "CASE WHEN UR.status = 1 THEN 1 ELSE 2 END as accion_status, ";
			
			sql += "UR.fechaderegistro, UR.fp  ";
			
			sql += "FROM redpost.tbl_usuarioredpost UR  ";
			sql += "inner join redpost.tbl_tipo_servicio TS on TS.cve_servicio = UR.servicio  ";
			
			
			
			if(fecha_inicio != "" && fecha_final != ""){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " UR.fechaderegistro >= '"+ fecha_inicio +"' and UR.fechaderegistro <= '"+ fecha_final +"' ";
			}
			if(fecha_inicio == "" && fecha_final != ""){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " UR.fechaderegistro = '"+ fecha_final +"' ";
			}
			if(fecha_inicio != "" && fecha_final == ""){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " UR.fechaderegistro = '"+ fecha_inicio +"' ";
			}

			if(nip != "" && nip != null){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " UR.nip = '"+ nip +"' ";
			}
			
			
			if(reg_completo > 0){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " ur.fp = '' ";
			}
			
			if(serv_corresp == 1){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " UR.correspondencia = 1 ";
			}
			
			
			sql += "where ";
			sql += cond;
			sql += "order by UR.fechaderegistro desc  ";
			
			
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();

			
			while (rs.next()) {
				UsuarioRedpostTo row = new UsuarioRedpostTo();
				
				row.setCve_usuarioredpost(rs.getInt("cve_usuarioredpost"));
				row.setNip(rs.getString("nip"));
				row.setNombre(rs.getString("nombre"));
				row.setApellidos(rs.getString("apellidos"));
				row.setRazonsocial(rs.getString("razonsocial"));
				row.setEmail(rs.getString("email"));
				row.setCalle(rs.getString("calle"));
				row.setNum_interior(rs.getString("num_interior"));
				row.setNum_exterior(rs.getString("num_exterior"));
			    row.setEstado(rs.getString("estado"));
			    row.setCiudad(rs.getString("ciudad"));
			    row.setServicio_texto(rs.getString("descripcion"));
			    row.setServicio(rs.getInt("cve_servicio"));
			    row.setSeguro(rs.getString("seguro"));
			    row.setFechaderegistro(rs.getString("fechaderegistro"));
			    row.setRegistro_completo(rs.getString("fp"));
				row.setCorrespondencia(rs.getString("Correspondencia"));
				row.setFrecuencia(rs.getString("frecuencia"));
				row.setFp(rs.getString("fp"));
				row.setStatus(rs.getString("status"));
				row.setAccion_status_texto(rs.getString("accion_status_texto"));
				row.setAccion_status(rs.getInt("accion_status"));
				
				_ReporteArribo.add( row );
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return _ReporteArribo ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return _ReporteArribo = null ;
		} finally {
	        if (conn != null) {
	            conn.close();
	        }
			
		}
	}	
	
	
	
	public static boolean updateUsuarioStatus(int cve_usuarioredpost,int accion_status)throws Exception {
		
		boolean res = false ;
		Connection conn = null;
		try
		{	
			conn = RedpostConexion.openConnection( ) ;
			conn.setAutoCommit( false ) ;
			PreparedStatement ps = null ;
			int status = 0;
			
			
			//status = 1 (Activo) -> Desactivar
			//status = 2 (Desactivado) -> Activar
			if(accion_status == 1){
				status = 0;
			}
			else{
				status = 1;
			}
			
			String sql = "" ;
				

					sql += "UPDATE redpost.tbl_usuarioredpost ";
					sql += "   SET  ";
					sql += " status="+ status +" ";
					
					sql += " WHERE cve_usuarioredpost ="+ cve_usuarioredpost +"; ";
					
				
				ps = conn.prepareStatement( sql ) ;
				ps.execute( ) ;

				res = true ;
				
				conn.commit( ) ;
				ps.close( ) ;
				conn.close( ) ;
				
				return res ;
				
			}
			catch ( Exception e ) 
			{
				e.printStackTrace( ) ;			
				return res ;
			} 
			finally 
			{
	            if (conn != null) 
	            {
	                conn.close();
	            }
			}
			
	}
	
	
	
	public static List getUsuario(int cve_usuarioredpost) throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;
		List _ReporteArribo = new ArrayList(); 
		String sql = "" ;
		
		String cond = "" ;
		
		try{			
			
			sql += "SELECT UR.cve_usuarioredpost, UR.nip, UR.nombre, UR.apellidos , UR.email,   ";
			sql += "UR.consignado_a, UR.calle  ,   ";
			sql += "UR.colonia, UR.cp, UR.estado, UR.ciudad, UR.tel_casa, UR.tel_oficina, UR.tel_movil,  "; 
			sql += "TS.cve_servicio,TS.descripcion,   "; 
		
			sql += " (CASE WHEN ur.referencias IS NULL or ur.referencias  = '' THEN '' ELSE ur.referencias END),  ";
			sql += " (CASE WHEN ur.num_interior IS NULL or ur.num_interior  = '' THEN '' ELSE ur.num_interior END),  ";
			sql += " (CASE WHEN ur.razonsocial IS NULL or ur.razonsocial  = '' THEN '' ELSE ur.razonsocial END),  ";
			sql += " (CASE WHEN ur.num_exterior IS NULL or ur.num_exterior  = '' THEN '' ELSE ur.num_exterior END),  ";
			sql += " CASE WHEN UR.frecuencia = '' or ur.frecuencia  = '' THEN 'Desactivado' ELSE  UR.frecuencia END,  ";
			sql += " CASE WHEN UR.seguro = 1 THEN 'Activo' ELSE 'Desactivado' END AS seguro, ";
			sql += " CASE WHEN UR.correspondencia = 1 THEN 'Activa' ELSE 'Desactivada' END AS Correspondencia, ";
			sql += " (CASE WHEN ur.fp IS NULL or ur.fp  = '' THEN 'Incompleto' ELSE ur.fp END), ";
			
			sql += "CASE WHEN UR.status = 1 THEN 'Activo' ELSE 'Desactivado' END as status, ";
			sql += "CASE WHEN UR.status = 1 THEN 'Desactivar' ELSE 'Activar' END as accion_status_texto, ";
			//accion = 1 Desactiva , accion = 2 Activar
			sql += "CASE WHEN UR.status = 1 THEN 1 ELSE 2 END as accion_status, ";
			
			sql += "UR.fechaderegistro  ";
			
			sql += "FROM redpost.tbl_usuarioredpost UR  ";
			sql += "inner join redpost.tbl_tipo_servicio TS on TS.cve_servicio = UR.servicio  ";
			
			
			
			sql += " where ";
			sql += "  UR.cve_usuarioredpost="+ cve_usuarioredpost +" ;";
			
			
			
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();

			
			while (rs.next()) {
				UsuarioRedpostTo row = new UsuarioRedpostTo();
				
				row.setCve_usuarioredpost(rs.getInt("cve_usuarioredpost"));
				row.setNip(rs.getString("nip"));
				row.setNombre(rs.getString("nombre"));
				row.setApellidos(rs.getString("apellidos"));
				row.setRazonsocial(rs.getString("razonsocial"));
				row.setEmail(rs.getString("email"));
				row.setCalle(rs.getString("calle"));
				row.setNum_interior(rs.getString("num_interior"));
				row.setNum_exterior(rs.getString("num_exterior"));
			    row.setEstado(rs.getString("estado"));
			    row.setCiudad(rs.getString("ciudad"));
			    row.setServicio_texto(rs.getString("descripcion"));
			    row.setServicio(rs.getInt("cve_servicio"));
			    row.setSeguro(rs.getString("seguro"));
			    row.setFechaderegistro(rs.getString("fechaderegistro"));
			    row.setRegistro_completo(rs.getString("fp"));
				row.setCorrespondencia(rs.getString("Correspondencia"));
				row.setFrecuencia(rs.getString("frecuencia"));
				
				row.setStatus(rs.getString("status"));
				row.setAccion_status_texto(rs.getString("accion_status_texto"));
				row.setAccion_status(rs.getInt("accion_status"));
				
				_ReporteArribo.add( row );
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return _ReporteArribo ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return _ReporteArribo = null ;
		} finally {
	        if (conn != null) {
	            conn.close();
	        }
			
		}
	}	
	
	
	
	
}
